package com.fulihui.systemcore.repository;

import java.util.List;

import com.fulihui.systemcore.dto.PosAreaDTO;
import com.fulihui.systemcore.dto.PosCityDTO;
import com.fulihui.systemcore.dto.PosProvinceDTO;

/**
 * 城市模型仓储接口
 * @author leeson 2016年5月25日 上午11:10:49
 */
public interface CityModuleRepository {

    /**
     * 查询全部省份
     * @return {@link PosProvinceDTO}
     */
    List<PosProvinceDTO> queryProvinceAll();

    /**
     * 查询省份下的城市
     * @param provinceCode 省份代码
     * @return {@link PosProvinceDTO}
     */
    List<PosCityDTO> queryCityAll(String provinceCode);

    /**
     * 查询城市下的区县
     * @param cityCode 城市代码
     * @return {@link PosAreaDTO}
     */
    List<PosAreaDTO> queryAreaAll(String cityCode);

    /**
     * 省份代码查询省份信息
     * @param provinceCode 省份代码
     * @return {@link PosProvinceDTO}
     */
    PosProvinceDTO queryProvince(String provinceCode);

    /**
     * 城市代码查询城市信息
     * @param cityCode 城市代码
     * @return {@link PosCityDTO}
     */
    PosCityDTO queryCity(String cityCode);

    /**
     * 城市代码集合查询城市模型
     * @param codes 城市代码集合
     * @return {@link PosCityDTO}
     */
    List<PosCityDTO> queryCitiesByCodes(List<String> codes);

    /**
     * 区县代码查询区县信息
     * @param areaCode 区县代码
     * @return {@link PosAreaDTO}
     */
    PosAreaDTO queryArea(String areaCode);

    /**
     * 查询省份下的省会城市
     * @param provinceCode 省份代码
     * @return {@link PosCityDTO}
     */
    PosCityDTO queryCapitalCityByProvinceCode(String provinceCode);

    /**
     * 查询所有热门城市
     * @return {@link PosCityDTO}
     */
    List<PosCityDTO> queryHotCities();

    /**
     * 批量设置热门城市
     * @param hot 是否热门 1 热门；0 非热门
     * @param codes 城市代码集合
     * @return 执行结果 true/false
     */
    boolean setHot(int hot, List<String> codes);
}